Following ClientProtector Logic

SoftwareShield System Feature Guide > Testing and Debugging Support > Following ClientProtector Logic

## Following ClientProtector Logic

As you implement licensing in your software, you will probably need to understand what is happening "under the hood" when the ClientProtector processes a function call. You will certainly need to understand what the logic is behind the StartUp function call which is mandatory for your licensed application.

However, the logic inside the ClientProtector can be quite complex , based on the state of the license and the numerous options you can set inside it, states of Alias Files, the state of the registry, and even the state of the machine itself. In order to help you follow along with the ClientProtector logic, you have two resources at your disposal:

1. The ClientProtector Control Flow-Charts. These flow-charts are absolutely essential to have on-hand if you need to understand the flow of logic behind many of the ClientProtector functions. This is especially true of the StartUp function, which is central to the systems operation. We recommend that you immediately print out a set of these flow charts and have them on your desk for reference as you develop your licensed applications.

2. The ClientProtector Debug Server. The SoftwareShield ClientProtector COM server ships as two separate dlls SSCProt.dll (which is the release version) and SSCProtD.dll (which is the debug version). These servers expose identical interfaces that uses exactly the same identifiers and GUIDs. They differ only in behaviour relative to outputting debugging information to aid you as a developer. The debug version allows you to specify a field of "Debug Flags" to control debugging output. See Controlling Debug Output in this section for more information.

### More Information

For help viewing and printing the ClientProtector Control Flow-Charts, see SoftwareShield ClientProtector Control Flow-Charts in the ClientProtector Reference.

For help on understanding how to control debug output using the debug ClientProtector, see Controlling Debug Output in this reference.

For help on actually understanding how to switch between debug and release ClientProtector versions during development, see Registering / Un-registering ClientProtector Servers in this reference.